package cn.rxmind.dlicense.core.constants;

import cn.rxmind.dlicense.core.annotation.Displayable;
import cn.rxmind.dlicense.core.exception.DLicenseErrEnum;
import cn.rxmind.dlicense.core.exception.DLicenseExceptionFactory;
import cn.rxmind.dlicense.core.validator.*;
import lombok.Getter;

/**
 * 校验规则枚举，对应到校验器
 *
 * @author renxin
 * @email renxinzhiliangzhi@163.com
 * @date 2021/4/16 3:46 下午
 */
@Getter
@Displayable(name = "校验工具")
public enum CheckRuleEnum {

    /**  子站编码校验 */
    SPRING_APPLICATION_NAME("子站编码"){
        @Override
        public DLicenseValidator mappingValidator() {
            return new SpringApplicationNameLicenseValidator();
        }
    },
    /**  IP地址校验 */
    IP_ADDRESSES("IP 地址") {
        @Override
        public DLicenseValidator mappingValidator() {
            return new IPAddressLicenseValidator();
        }
    },
    /**  MAC地址校验 */
    MAC_ADDRESSES("MAC 地址") {
        @Override
        public DLicenseValidator mappingValidator() {
            return new MacAddressLicenseValidator();
        }
    },
    /**  证书有效期校验 */
    LICENSE_ACTIVE_TIME ("证书有效时间"){
        @Override
        public DLicenseValidator mappingValidator() {
            return new LicenseActiveTimeValidator();
        }
    },

    ;

    private String name;

    CheckRuleEnum(String name) {
        this.name = name;
    }

    /**
     * 生成对应校验器
     *
     * @return
     */
    public DLicenseValidator mappingValidator(){

        throw DLicenseExceptionFactory.buildUtryLicenseException(DLicenseErrEnum.PARAMETER_ILLEGAL);
    }
}
